package com.siqi.hr.system.custom.dao.intf;

import com.siqi.hr.system.custom.entity.EntityRecord;
import com.siqi.hr.system.exception.DeleteException;

import java.util.List;
import java.util.Map;

/**
 * 实体注册信息维护dao接口层
 * @author    xiaogq
 * Created by xiaogoingqin on 2016/7/24.
 */
public interface EntityRecordDao {

    /**
     * 查询所有的系统对象或者自定义对象(xiaogq)
     * @param systemEntity      查询系统对象还是自定义对象标识(true:系统对象，false：自定义对象)
     * @return
     */
    public abstract List<Map<String, Object>> getEntityRecords(boolean systemEntity) throws Exception;

    /**
     * 根据实体id获取实体对象信息(xiaogq)
     * @param entityId         实体id
     * @return
     */
    public EntityRecord queryEntityRecordById(int entityId) throws Exception;

    /**
     * 根据实体id判断该表是否在当前数据库中存在
     * @author          xiaogq
     * @param entityId      实体id
     * @return
     */
    public abstract boolean tableExistedInDatabase(Integer entityId);

    /**
     * 修改实体信息
     * @author          xiaogq
     * @param entity   实体对象信息
     */
    public int updateEntityRecord(EntityRecord entity);

    /**
     * 根据实体id删除实体注册表中信息
     * @author          xiaogq
     * @param entityId      实体id
     * @return
     */
    public void deleteEntityRecord(Integer entityId);

    /**
     * 查询当前实体表所有记录数
     * @author          xiaogq
     * @param entityId
     * @return
     * @throws DeleteException
     */
    public int getEntityTableRecodeCount(Integer entityId)throws DeleteException;

    /**
     * 查询所有可以被引用实体的id及中文名称
     * @author          xiaogq
     * @param bool     true:实体可以被引用，false：实体不可以被引用
     * @return
     */
    public List<EntityRecord> getCanQuoteEntity(boolean bool);

    /**
     * 查询所有受权限控制实体的id及中文名称
     * @author          xiaogq
     * @param bool     true:实体受权限控制，false：实体不受权限控制
     * @return
     */
    public List<EntityRecord> queryPmsEntity(boolean bool) ;

}
